﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PhongMachTu.OModel;
using System.Collections;
using PhongMachTu.OConnection;

namespace PhongMachTu.OForm
{
    public partial class FormPatientInDay : Form
    {
        private ArrayList patients;

        public ArrayList Patients
        {
            get { return patients; }
            set { patients = value; }
        }
        private int paID;
        private int viID;
        public FormPatientInDay()
        {
            InitializeComponent();
        }

        private void lvPatient_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvPatient.SelectedItems.Count == 0) return;
            ListViewItem lvItem = lvPatient.SelectedItems[0];
            Patient pa = (Patient)lvItem.Tag;
            paID = pa.PatienId;
            viID = pa.ViID;
        }

        private void btnCreatePres_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                int a = DataManipulate.getPatientStat(paID, viID);
                if (a == 2 || a == 3 || a == 4)
                {
                    MessageBox.Show("Phiếu khám được lập. Để thay đổi thông tin vui lòng chọn bệnh nhân và chọn thay đổi thông tin");
                }
                else
                {
                    FormManager.prescriptionForm.Show();
                    FormManager.prescriptionForm.CurPaID = paID;
                    FormManager.prescriptionForm.CloseID = 1;
                    FormManager.prescriptionForm.refreshControl();
                    FormManager.paInDayForm.Hide();
                }
            }
            else
            {
                FormManager.paInDayForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        private void btnAddPatient_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                FormManager.paInDayForm.Hide();
                FormManager.createPaForm.Show();
            }
            else
            {
                FormManager.paInDayForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        private void btnAddInList_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                FormManager.searchForm.CloseID = 1;
                FormManager.searchForm.Patients = null;
                FormManager.searchForm.refreshLV(1);
                FormManager.paInDayForm.Hide();
                FormManager.searchForm.Show();
            }
            else
            {
                FormManager.paInDayForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        private void btnDelPatient_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                if (DataManipulate.checkDelVisit(viID))
                {
                    MessageBox.Show("Bệnh nhân đã khám, thông tin phiếu khám đã được lưu không thể xóa khỏi danh sách trong ngày.");
                }
                else
                {
                    if (DataManipulate.delVisit(viID))
                    {
                        patients = DataManipulate.getPatientInDay();
                        loadData();
                    }
                    else
                    {
                        MessageBox.Show("Xãy ra lỗi trong quá trình xóa. Vui lòng thử lại");
                    }
                }
            }
            else
            {
                FormManager.paInDayForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        private void btnEditPres_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                int a = DataManipulate.getPatientStat(paID, viID);
                if (a == 2 || a == 3 || a == 4)
                {
                    Visit vi;
                    if (a == 2)
                    {
                        vi = DataManipulate.getVisitInfo(viID, 2);

                    }
                    else if (a == 3)
                    {
                        vi = DataManipulate.getVisitInfo(viID, 3);

                    }
                    else
                    {
                        vi = DataManipulate.getVisitInfo(viID, 4);

                    }
                    FormManager.prescriptionForm.Show();
                    FormManager.prescriptionForm.Patient = DataManipulate.getPatientByID(paID);
                    FormManager.prescriptionForm.CurPaID = paID;
                    FormManager.prescriptionForm.setForEdit(vi.IdVisit, vi.VisitDate, vi.Symtom, vi.DiseaseID);
                    FormManager.paInDayForm.Hide();
                }
                else
                {
                    MessageBox.Show("Phiếu khám chưa tồn tại, không thể thay đổi thông tin");
                }
            }
            else
            {
                FormManager.paInDayForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        public void loadData()
        {
            lvPatient.Items.Clear();
            if (patients != null)
            {
                for (int i = 0; i < patients.Count; i++)
                {
                    int stt = i + 1;
                    Patient pa = (Patient)patients[i];
                    int id = pa.PatienId;
                    String fullname = pa.Fullname;
                    bool g = pa.Sex;
                    String gender = "";
                    if (g)
                    {
                        gender = "Nam";
                    }
                    else
                    {
                        gender = "Nữ";
                    }
                    int birthyear = int.Parse(pa.Dob.ToString("yyyy"));
                    String address = pa.Address;
                    String status = "";
                    int a = DataManipulate.getPatientStat(pa.PatienId, pa.ViID);
                    if (a == 0)
                    {
                        status = "Không có trong DS khám trong ngày";
                    }
                    else if (a == 1)
                    {
                        status = "Chưa khám";
                    }
                    else if (a == 2)
                    {
                        status = "Chưa xác định bệnh";
                    }
                    else if (a == 3)
                    {
                        status = "Chưa xác triệu chứng";
                    }
                    else if (a == 4)
                    {
                        status = "Đã khám";
                    }
                    else if (a == 5)
                    {
                        status = "Đã thanh toán";
                    }
                    else
                    {
                        status = "Không thể tìm thấy thông tin";
                    }

                    ListViewItem item = new ListViewItem(stt.ToString());
                    item.SubItems.Add(id.ToString());
                    item.SubItems.Add(fullname);
                    item.SubItems.Add(birthyear.ToString());
                    item.SubItems.Add(gender);
                    item.SubItems.Add(address);
                    item.SubItems.Add(status);
                    item.Tag = pa;
                    lvPatient.Items.Add(item);
                }
            }
        }

        private void FormPatientInDay_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            FormManager.mainForm.Show();
            FormManager.paInDayForm.Hide();
        }

        public void checkUser()
        {
            if (OSession.LoggedInUser.Type == 1)
            {
                btnAddInList.Visible = false;
                btnAddPatient.Visible = false;
                btnDelPatient.Visible = false;
                btnCreatePres.Visible = true;
                btnEditPres.Visible = true;
            }
            else
            {
                btnAddInList.Visible = true;
                btnAddPatient.Visible = true;
                btnDelPatient.Visible = true;
                btnCreatePres.Visible = false;
                btnEditPres.Visible = false;
            }
        }
    }
}
